<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">















 
 
 
 
 
 
 
  
  


<html>
  <head>
    <script type="text/javascript" language="JavaScript">
    ORIGINAL_PAGE_PATH = "/appengine/docs/python/overview.html";
    </script>
    
    
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>App Engine Python Overview - Google App Engine - Google Code</title>
<script type="text/javascript"><!--
(function(){function a(){this.t={};this.tick=function(c){this.t[c]=(new Date).getTime()};this.tick("start")}var b=new a;window.jstiming={Timer:a,load:b};if(window.external&&window.external.pageT)window.jstiming.pt=window.external.pageT;})();

var _tocPath_ = '/appengine/docs/_toc.ezt';
var codesite_token = null;
//--></script>
<link href="../../../css/codesite.pack.04102009.css" type="text/css" rel="stylesheet"></link>
<script src="../../../js/codesite_head.pack.04102009.js" type="text/javascript"></script>
<script type="text/javascript">CODESITE_CSITimer['load'].tick('bhs');</script>
<link rel="search" type="application/opensearchdescription+xml" title="Google Code" href="http://code.google.com/osd.xml" />

<!--[if IE]><link rel="stylesheet" type="text/css" href="../../../css/iehacks.css" /><![endif]-->

    <link href="../../../css/semantic_headers.css" rel="stylesheet" type="text/css" />
    <link href="../../css/local_extensions.css" rel="stylesheet" type="text/css" />
  </head>

  <body class="gc-documentation">

    
    
    
</a>

<div id="gb">
 <span>
  
    <a id="lang-dropdown" class="dropdown" href="http://code.google.com" onclick="return false;"><img class="globeicon" src="../../../images/globe2_small.png"/><span>English</span></a>
  
 </span>
</div>

<div class="gbh" style="left: 0pt;"></div>
<div class="gbh" style="right: 0pt;"></div>


<style type="text/css">
  #gc-topnav h1 {
    padding: 0 0 0 6px;
  }
</style>


<div id="gc-container">
<a name="top"></a>
<div id="skipto">
  <a href="#gc-pagecontent">Skip to page content</a>
  <a href="#gc-toc">Skip to main navigation</a>
</div>

<div id="gc-header">
  <div id="logo"><a href="http://code.google.com">
  
  
     <img src="../../../images/cleardot.gif" height="1px" width="1px" alt="Google Code Home Page" id="gc-logo-img"/>
  
  
  </a></div>
  <div id="search">
    <div id="searchForm" class="searchForm">
      <form id="cse" action="http://www.google.com/cse" accept-charset="utf-8" class="gsc-search-box" onsubmit="executeGSearch(document.getElementById('gsearchInput').value); return false;">
      <noscript>
      <input type="hidden" name="cref" value="http://code.google.com/cse/googlecode-context.xml"/>
      </noscript>
        <table class="gsc-search-box" cellpadding="0" cellspacing="0">
          <tbody>
            <tr>
              <td class="gsc-input">
                <input id="gsearchInput" type="text" name="q" maxlength="2048" class="gsc-input" autocomplete="off" title="Google Code Search" style="width:345px"/>
              </td>
              <td class="gsc-search-button">
                <div id="cs-searchresults" onclick="event.cancelBubble = true;"></div>
                <input title="Search" id="gsearchButton" class="gsc-search-button" name="sa" value="Search" type="submit"/>
              </td>
            </tr>
            <tr>
              <td colspan="2" class="greytext">e.g. "templates" or "datastore"</td>
            </tr>
          </tbody>
        </table>
      </form>
    </div> <!-- end searchForm -->
  </div> <!-- end search -->
</div> <!-- end gc-header -->


<div id="codesiteContent">

<a name="gc-topnav-anchor"></a>
<div id="gc-topnav">
  <h1>Google App Engine</h1>
  <ul id="docs" class="gc-topnav-tabs">

    <li id="home_link">
      <a href="../../index.html" title="Google App Engine home page">Home</a>
    </li>
  
    <li id="docs_link">
      <a href="../index.html" class="selected" title="Official Google App Engine documentation">Docs</a>
    </li>
  
    <li id="faq_link">
      <a href="../../kb/index.html" title="Answers to frequently asked questions about Google App Engine">FAQ</a>
    </li>
  
    <li id="articles_link">
      <a href="../../articles/index.html" title="Focused articles and tutorials for Google App Engine developers">Articles</a>
    </li>
  
    <li>
      <a href="http://googleappengine.blogspot.com/" title="Official Google App Engine blog">Blog</a>
    </li>
  
    <li>
      <a href="../../community.html" title="Community home for Google App Engine">Community</a>
    </li>
  
    <li>
      <a href="../../terms.html" title="Google App Engine terms of service">Terms</a>
    </li>
  
    <li>
      <a href="../../downloads.html" title="Download Google App Engine">Download</a>
    </li>
  

  </ul>
</div> <!-- end gc-topnav -->

    <div class="g-section g-tpl-170">

      <div class="g-unit g-first" id="gc-toc">
        <ul>
  <li><a href="../../downloads.html">Downloads</a></li>
  <li><a href="http://code.google.com/status/appengine">System Status</a></li>
  <li><a href="http://code.google.com/p/googleappengine/issues/list">Issue Tracker</a></li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Getting Started</h2>
    <ul>
      <li><a href="../whatisgoogleappengine.html">What Is Google App Engine?</a></li>
      <li><a href="../java/gettingstarted/index.html">Java</a>
        <ul>
              <li><a href="../java/gettingstarted/introduction.html">Introduction</a></li>
    <li><a href="../java/gettingstarted/installing.html">Installing the Java SDK</a></li>
    <li><a href="../java/gettingstarted/creating.html">Creating a Project</a></li>
    <li><a href="../java/gettingstarted/usingusers.html">Using the Users Service</a></li>
    <li><a href="../java/gettingstarted/usingjsps.html">Using JSPs</a></li>
    <li><a href="../java/gettingstarted/usingdatastore.html">Using the Datastore with JDO</a></li>
    <li><a href="../java/gettingstarted/staticfiles.html">Using Static Files</a></li>
    <li><a href="../java/gettingstarted/uploading.html">Uploading Your Application</a></li>

        </ul>
      </li>
      <li><a href="gettingstarted/index.html">Python</a>
        <ul>
            <li><a href="gettingstarted/introduction.html">Introduction</a></li>
  <li><a href="gettingstarted/devenvironment.html">The Development Environment</a></li>
  <li><a href="gettingstarted/helloworld.html">Hello, World!</a></li>
  <li><a href="gettingstarted/usingwebapp.html">Using the webapp Framework</a></li>
  <li><a href="gettingstarted/usingusers.html">Using the Users Service</a></li>
  <li><a href="gettingstarted/handlingforms.html">Handling Forms With webapp</a></li>
  <li><a href="gettingstarted/usingdatastore.html">Using the Datastore</a></li>
  <li><a href="gettingstarted/templates.html">Using Templates</a></li>
  <li><a href="gettingstarted/staticfiles.html">Using Static Files</a></li>
  <li><a href="gettingstarted/uploading.html">Uploading Your Application</a></li>

        </ul>
      </li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Java <sup class="new">Early Look</sup></h2>
    <ul>
          <li><a href="../java/overview.html">Overview</a></li>
    <li><a href="../java/runtime.html">Servlet Environment</a></li>
    <li><a href="../java/datastore/index.html">Storing Data</a>
      <ul>
            <li><a href="../java/datastore/overview.html">Overview</a></li>
    <li><a href="../java/datastore/usingjdo.html">Using JDO</a></li>
    <li><a href="../java/datastore/dataclasses.html">Defining Data Classes</a></li>
    <li><a href="../java/datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
    <li><a href="../java/datastore/queriesandindexes.html">Queries and Indexes</a></li>
    <li><a href="../java/datastore/transactions.html">Transactions</a></li>
    <li><a href="../java/datastore/relationships.html">Relationships</a></li>
    <li><a href="../java/datastore/usingjpa.html">Using JPA</a></li>
    <li><a href="../java/javadoc/com/google/appengine/api/datastore/package-summary.html">Low-level API</a></li>

      </ul>
    </li>
    <li><a href="../java/apis.html">Services</a>
      <ul>
        <li><a href="../java/memcache/index.html">Memcache</a>
          <ul>
                <li><a href="../java/memcache/overview.html">Overview</a></li>
    <li><a href="../java/memcache/usingjcache.html">Using JCache</a></li>
    <li><a href="../java/javadoc/com/google/appengine/api/memcache/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="../java/urlfetch/index.html">URL Fetch</a>
          <ul>
                <li><a href="../java/urlfetch/overview.html">Overview</a></li>
    <li><a href="../java/urlfetch/usingjavanet.html">Using java.net</a></li>
    <li><a href="../java/javadoc/com/google/appengine/api/urlfetch/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="../java/mail/index.html">Mail</a>
          <ul>
                <li><a href="../java/mail/overview.html">Overview</a></li>
    <li><a href="../java/mail/usingjavamail.html">Using JavaMail</a></li>
    <li><a href="../java/javadoc/com/google/appengine/api/mail/package-summary.html">Low-level API</a></li>

          </ul>
        </li>
        <li><a href="../java/images/index.html">Images</a>
          <ul>
                <li><a href="../java/images/overview.html">Overview</a></li>
    <li><a href="../java/javadoc/com/google/appengine/api/images/package-summary.html">API Reference</a></li>

          </ul>
        </li>
        <li><a href="../java/users/index.html">Google Accounts</a>
          <ul>
                <li><a href="../java/users/overview.html">Overview</a></li>
    <li><a href="../java/javadoc/com/google/appengine/api/users/package-summary.html">API Reference</a></li>

          </ul>
        </li>
      </ul>
    </li>
    <li><a href="../java/javadoc/index.html">Javadoc Reference</a></li>
    <li><a href="../java/jrewhitelist.html">JRE Class White List</a></li>
    <li><a href="../java/config/index.html">Configuration</a>
      <ul>
            <li><a href="../java/config/webxml.html">Deployment Descriptor</a></li>
    <li><a href="../java/config/appconfig.html">App Config</a></li>
    <li><a href="../java/config/indexconfig.html">Index Config</a></li>
    <li><a href="../java/config/cron.html">Scheduled Tasks</a></li>

      </ul>
    </li>
    <li><a href="../java/tools/index.html">Tools</a>
      <ul>
            <li><a href="../java/tools/devserver.html">Development Server</a></li>
    <li><a href="../java/tools/uploadinganapp.html">Uploading and Managing</a></li>
    <li><a href="../java/tools/eclipse.html">Google Plugin for Eclipse</a></li>
    <li><a href="../java/tools/ant.html">Using Apache Ant</a></li>

      </ul>
    </li>
    <li><a href="../java/howto/index.html">How-To</a>
      <ul>
              <li><a href="../java/howto/unittesting.html">Unit Testing</a></li>

      </ul>
    </li>

    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Python</h2>
    <ul>
          <li><a href="overview.html">Overview</a></li>
    <li><a href="runtime.html">CGI Environment</a></li>
    <li><a href="datastore/index.html">Storing Data</a>
      <ul>
             <li><a href="datastore/overview.html">Overview</a></li>
     <li><a href="datastore/entitiesandmodels.html">Entities and Models</a></li>
     <li><a href="datastore/creatinggettinganddeletingdata.html">Creating, Getting and Deleting Data</a></li>
     <li><a href="datastore/keysandentitygroups.html">Keys and Entity Groups</a></li>
     <li><a href="datastore/queriesandindexes.html">Queries and Indexes</a></li>
     <li><a href="datastore/transactions.html">Transactions</a></li>
     <li><a href="datastore/typesandpropertyclasses.html">Types and Property Classes</a></li>
     <li><a href="datastore/gqlreference.html">GQL Reference</a></li>

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="datastore/modelclass.html">Model</a></li>
         <li><a href="datastore/expandoclass.html">Expando</a></li>
         <li><a href="datastore/polymodelclass.html">PolyModel</a></li>
         <li><a href="datastore/propertyclass.html">Property</a></li>
         <li><a href="datastore/queryclass.html">Query</a></li>
         <li><a href="datastore/gqlqueryclass.html">GqlQuery</a></li>
         <li><a href="datastore/keyclass.html">Key</a></li>
         <li><a href="datastore/functions.html">Functions</a></li>
         <li><a href="datastore/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

      </ul>
    </li>
    <li><a href="apis.html">Services</a>
      <ul>
        <li><a href="memcache/index.html">Memcache</a>
          <ul>
                 <li><a href="memcache/overview.html">Overview</a></li>
      <li><a href="memcache/usingmemcache.html">Using Memcache</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="memcache/clientclass.html">Client</a></li>
         <li><a href="memcache/functions.html">Functions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="urlfetch/index.html">URL Fetch</a>
          <ul>
                 <li><a href="urlfetch/overview.html">Overview</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="urlfetch/fetchfunction.html">The fetch Function</a></li>
         <li><a href="urlfetch/responseobjects.html">Response Objects</a></li>
         <li><a href="urlfetch/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="mail/index.html">Mail</a>
          <ul>
                 <li><a href="mail/overview.html">Overview</a></li>
     <li><a href="mail/sendingmail.html">Sending Mail</a></li>
     <li><a href="mail/attachments.html">Attachments</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="mail/emailmessageclass.html">EmailMessage</a></li>
         <li><a href="mail/emailmessagefields.html">Message Fields</a></li>
         <li><a href="mail/functions.html">Functions</a></li>
         <li><a href="mail/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="images/index.html">Images</a>
          <ul>
                 <li><a href="images/overview.html">Overview</a></li>
     <li><a href="images/installingPIL.html">Installing PIL</a></li>
     <li><a href="images/usingimages.html">Using the Images API</a></li>
     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="images/imageclass.html">Image</a></li>
         <li><a href="images/functions.html">Functions</a></li>
         <li><a href="images/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
        <li><a href="users/index.html">Google Accounts</a>
          <ul>
                 <li><a href="users/overview.html">Overview</a></li>
     <li><a href="users/userobjects.html">User Objects</a></li>
     <li><a href="users/loginurls.html">Login URLs</a></li>
     <li><a href="users/adminusers.html">Admin Users</a></li>

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="users/userclass.html">User</a></li>
         <li><a href="users/functions.html">Functions</a></li>
         <li><a href="users/exceptions.html">Exceptions</a></li>
       </ul>
     </li>

          </ul>
        </li>
      </ul>
    </li>
    <li><a href="config/index.html">Configuration</a>
      <ul>
            <li><a href="config/appconfig.html">App Config</a></li>
    <li><a href="config/indexconfig.html">Index Config</a></li>
    <li><a href="config/cron.html">Scheduled Tasks</a></li>

      </ul>
    </li>
    <li><a href="tools/index.html">Tools</a>
      <ul>
            <li><a href="tools/devserver.html">Development Server</a></li>
    <li><a href="tools/uploadinganapp.html">Uploading and Managing</a></li>
    <li><a href="tools/uploadingdata.html">Uploading Data</a></li>
    <li><a href="tools/webapp/index.html">webapp Framework</a>
      <ul>
             <li><a href="tools/webapp/overview.html">Overview</a></li>
     <li><a href="tools/webapp/running.html">Running the Application</a></li>
     <li><a href="tools/webapp/requesthandlers.html">Request Handlers</a></li>
     <li><a href="tools/webapp/requestdata.html">Request Data</a></li>
     <li><a href="tools/webapp/buildingtheresponse.html">Building the Response</a></li>
     <li><a href="tools/webapp/redirects.html">Redirects, Headers and Status Codes</a></li>
     

     <li><span class="tlw-title tlw-expanded">Reference</span>
       <ul>
         <li><a href="tools/webapp/requestclass.html">Request</a></li>
         <li><a href="tools/webapp/responseclass.html">Response</a></li>
         <li><a href="tools/webapp/requesthandlerclass.html">RequestHandler</a></li>
         <li><a href="tools/webapp/wsgiapplicationclass.html">WSGIApplication</a></li>
         <li><a href="tools/webapp/utilmodule.html">Utility Functions</a></li>
         
       </ul>
     </li>

      </ul>
    </li>
    <li><a href="tools/libraries.html">Third-party Libraries</a></li>

      </ul>
    </li>
    <li><a href="howto/index.html">How-To</a>
      <ul>
              <li><a href="howto/usinggdataservices.html">Google Data Services</a></li>

      </ul>
    </li>

    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Managing Your App</h2>
    <ul>
      <li><a href="../theadminconsole.html">The Admin Console</a></li>
      <li><a href="../quotas.html">Quotas</a></li>
      <li><a href="../billing.html">Billing</a></li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><h2>Resources</h2>
    <ul>
      <li><a href="../../kb/index.html">FAQ</a></li>
      <li><a href="../../articles/index.html">Articles</a></li>
      <li><a href="http://appengine-cookbook.appspot.com/">Cookbook</a></li>
      <li><a href="http://appgallery.appspot.com/">App Gallery</a></li>
      <li><a href="http://code.google.com/p/googleappengine/">SDK Code</a></li>
      <li><a href="http://code.google.com/p/google-app-engine-samples/">Sample Apps Code</a></li>
      <li><a href="../../community.html">Discussion Groups</a></li>
    </ul>
  </li>
</ul>
<div class="line"></div>
<ul>
  <li><a href="../roadmap.html">Product Roadmap</a></li>
  <li><a href="http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes">Release Notes</a></li>
  <li><a href="../revision_history.html">Revision History</a></li>
</ul>

        <a class="hidden" href="#gc-topnav-anchor">More Google App Engine resource links</a>
      </div>

      <div class="g-unit" id="gc-pagecontent">
        <h1 class="page_title">App Engine Python Overview</h1>



<p>Welcome to Google App Engine for Python!  With App Engine, you can build web applications using <a href="http://www.python.org/">the Python programming language</a>, and take advantage of the many libraries, tools and frameworks for Python that professional developers use to build world-class web applications.  Your Python application runs on Google's scalable infrastructure, and uses large-scale persistent storage and services.</p>

<p>If you haven't already, see <a href="gettingstarted/index.html">the Python Getting Started Guide</a> for an interactive introduction to developing web applications with Python and Google App Engine.</p>


<h3>The Python Runtime Environment</h3>

<p>A Python web app interacts with the App Engine web server using the CGI protocol.  An app can use a WSGI-compatible web application framework using a CGI adapter.  App Engine includes a simple web application framework, called <a href="tools/webapp/index.html">webapp</a>, to make it easy to get started.  For larger applications, mature third-party frameworks, such as <a href="http://www.djangoproject.com">Django</a>, work well with App Engine.</p>

<p>App Engine supports Python 2.5.  The Python interpreter runs in a secured "sandbox" environment to isolate your application for service and security.  The interpreter can run any Python code, including Python modules you include with your application, as well as the Python standard library.  The interpreter cannot load Python modules with C code; it is a "pure" Python environment.</p>

<p>The sandbox ensures that apps can only perform actions that do not interfere with the performance and scalability of other apps.  For instance, an app cannot write data to the local file system or make arbitrary network connections.  Instead, apps use scalable services provided by App Engine to store data and communicate over the Internet.  The Python interpreter raises an exception when an app attempts to import a module from the standard library known to not work within the sandbox restrictions.</p>

<p>See <a href="runtime.html">CGI Environment</a> for more information.</p>


<h3>The Datastore and Services</h3>

<p>Apps can use the App Engine <a href="datastore/index.html">Datastore</a> for reliable, scalable persistent storage of data.  The Python API to the App Engine datastore includes rich data modeling tools for managing data schemas.  The API supports two interfaces for performing datastore queries, including GQL, a SQL-like query language that is also used in <a href="../theadminconsole.html">the Admin Console</a>.</p>

<p>The App Engine <a href="memcache/index.html">Memcache</a> provides fast, transient distributed storage for caching the results of datastore queries and calculations.  The Python interface to the App Engine memcache is compatible with the Python <a href="http://www.danga.com/memcached/">Memcached</a> API.</p>

<p>Apps use the <a href="urlfetch/index.html">URL Fetch</a> service to access resources over the web, and to communicate with other hosts using the HTTP and HTTPS protocols.  Python applications can use the <a href="http://www.python.org/doc/2.5.2/lib/module-urllib.html">urllib</a>, <a href="http://www.python.org/doc/2.5.2/lib/module-urllib2.html">urllib2</a>, or <a href="http://www.python.org/doc/2.5.2/lib/module-httplib.html">httplib</a> modules from the Python standard library to access this service, or they can use the App Engine URL Fetch service API.</p>

<p>An app can use the <a href="mail/index.html">Mail</a> service to send email messages on behalf of the application's administrators, or on behalf of the currently signed in user.</p>  

<p>The <a href="images/index.html">Images</a> service lets applications transform and manipulate image data in several formats, including cropping, rotating, resizing, and photo color enhancement.</p>

<p>An application can use <a href="users/index.html">Google Accounts</a> for user authentication.  Google Accounts handles user account creation and sign-in, and a user that already has a Google account (such as a GMail account) can use that account with your app.  An app can detect when the current user is signed in, and can access the user's email address.  The Python API can return user data in an object that can be stored directly in the datastore.</p>

<h3>Scheduled Tasks</h3>

<p>An application can configure scheduled tasks that will call URLs of the application at specified intervals. For more on this, see <a href="config/cron.html">Cron Jobs</a>.

<h3>Python Tools</h3>

<p>The App Engine Python SDK includes tools for testing your application, uploading your application files, managing datastore indexes, downloading log data, and uploading large amounts of data to the datastore.</p>

<p>The <a href="tools/devserver.html">development server</a> runs your application on your local computer for testing your application.  The server simulates the App Engine datastore, services and sandbox restrictions.  The development server can also generate configuration for datastore indexes based on the queries the app performs during testing.</p>

<p>A multipurpose tool called <a href="tools/uploadinganapp.html">appcfg.py</a> handles all command-line interaction with your application running on App Engine.  <code>appcfg.py</code> can upload your application to App Engine, or just update the datastore index configuration so you can build new indexes before updating the code.  It can also download the app's log data, so you can analyze your app's performance using your own tools.</p>

<p>The Python SDK includes <a href="tools/uploadingdata.html">a data upload tool</a> that can add data to your app's datastore from your local data files.  The tool can extract data from CSV files, a spreadsheet format supported by most spreadsheet software such as Google Docs or Microsoft Excel.  You can customize how CSV files are converted into datastore entities using Python code.</p>



      </div><!-- end gc-pagecontent -->
   </div><!-- end gooey wrapper -->

    </div> <!-- end codesite content -->

<div id="gc-footer" dir="ltr">
  <div class="text">
    
      <div class="notice"><div id="notice" style="text-align: center; border: 1em 0em 1em 0em">
  Except as otherwise <a
  href="http://code.google.com/policies.html#restrictions">noted</a>,
  the content of this page is licensed under the <a rel="license"
  href="http://creativecommons.org/licenses/by/2.5/">Creative Commons
  Attribution 2.5 License</a>, and code samples are licensed under the
  <a rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">Apache
  2.0 License</a>.
<!-- <rdf:RDF xmlns="http://web.resource.org/cc/" 
              xmlns:dc="http://purl.org/dc/elements/1.1/"
              xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <Work rdf:about="">
    <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />
  </Work>
  <License rdf:about="http://creativecommons.org/licenses/by/2.5/">
    <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
    <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
    <requires rdf:resource="http://web.resource.org/cc/Notice"/>
    <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
    <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
  </License>
</rdf:RDF> -->
</div>
Java is a registered trademark of Sun Microsystems, Inc.</div>
    
    &copy;2009 Google -
    <a href="http://code.google.com">Code Home</a> -
    <a href="http://www.google.com/accounts/TOS">Terms of Service</a> -
    <a href="http://www.google.com/privacy.html">Privacy Policy</a> -
    <a href="http://code.google.com/more">Site Directory</a>
    <br /> <br />
    Google Code offered in:
    <a href="http://code.google.com/intl/en">English</a> -
    <a href="http://code.google.com/intl/es">Español</a> -
    <a href="http://code.google.com/intl/ja">日本語</a> -
    <a href="http://code.google.com/intl/ko">한국어</a> -
    <a href="http://code.google.com/intl/pt-BR">Português</a> -
    <a href="http://code.google.com/intl/ru">Pусский</a> -
    <a href="http://code.google.com/intl/zh-CN">中文(简体)</a> -
    <a href="http://code.google.com/intl/zh-TW">中文(繁體)</a>
  </div>
</div><!-- end gc-footer -->

</div><!-- end gc-containter -->

<script type="text/javascript">CODESITE_CSITimer['load'].tick('ats');</script>
<script src="../../../js/codesite_tail.pack.04102009.js" type="text/javascript"></script>






  </body>
</html>


